//
//  HMBaseTableViewController.swift
//  WeiBo
//
//  Created by apple on 16/6/23.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit
import SVProgressHUD

class HMBaseTableViewController: UITableViewController {

    // 以后企业开发中,会有很多的界面传值,我们可以在基类里定义一个成员便利,方便我们接受
    var params: AnyObject?
    
    // 定义一个标志位 -- 判断是否登录 access_token
    // 问题一: 控制器不能喝Model打交道
    // 解决思路: 定义Viewmodel,让Viewmodel和控制器交互
    
    // 问题二: 多次创建ViewModel对象
    // 解决思路: 创建ViewModel的单例对象
    
    // 问题三: 控制器这里 有对数据的处理逻辑
//    var isLogin: Bool = !(HMOauthViewModel.shareInstance.userModel?.access_token == nil)
    var isLogin: Bool = HMOauthViewModel.shareInstance.isLogin
    
    
    // 显示访客视图
    let visitorView = HMVisitorView()
    
    /*
        if isLogin = false {
        // 显示 访客视图
    } else {
        // 显示 tableView
    }
    
    */
    // 控制器的声明周期 loadView 方法
    // loadView就是给我们去创建一个视图
    // 如果一个视图填充整个控制器的话,我们可以采用这样的方法
    override func loadView() {
        
        // 重写loadView方法,没有调用super.loadView
        // 1. 视图是黑的,另外一个 是 死循环
        
        // 2. 如果你没有调用 super.loadView方法,需要你指定一个view
        
        if isLogin {
            super.loadView()
        } else {
            
           
            
//            visitorView.backgroundColor = UIColor.yellowColor()
            
            visitorView.startAnimation()
            
            // 第四步: 设置代理
            // 注意: 设置完代理之后,会报错,实现它的协议方法就好了
            visitorView.delegate = self
            // 在loadView里指定view的视图,会自动填充满这个视图控制器
            view = visitorView
            
            // 设置导航栏
            setupNav()
            
            
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()

        
    }
   
    // 设置导航栏
    private func setupNav(){
        
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "didRegister")
        
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: "didLogin")
        
       
    }

}

// 用户代理的隔离

// swift遵守协议 采用 : 协议
// 第五步
extension HMBaseTableViewController: HMVisitorViewDelegate{
    
    func didRegister() {
     
        printLog("注册页面出来了")
        let oauth = HMOauthViewController()
        
        // 
        let nav = UINavigationController(rootViewController: oauth)
        
        presentViewController(nav, animated: true) { () -> Void in
            
        }
        
    }
    
    
    func didLogin() {
        printLog("登录页面出来了")
    }
}

//MARK:-- 视图加载的方法
extension HMBaseTableViewController{
    
///  视图加载方法
    func showLoadingView(){
        
        SVProgressHUD.show()
        
    }
///  视图隐藏方法
    func hiddenLoadingView(){
        
//        SVProgressHUD.dismiss()
        hiddenLoadingView(nil)
    }
    
    func hiddenLoadingView(messsage: String?){
        
        SVProgressHUD.showErrorWithStatus(messsage)
    }
    
}
